package com.example.crazyfall;

import org.andengine.engine.camera.Camera;
import org.andengine.entity.scene.menu.MenuScene;
import org.andengine.entity.scene.menu.item.IMenuItem;
import org.andengine.entity.scene.menu.item.SpriteMenuItem;
import org.andengine.entity.scene.menu.item.decorator.ScaleMenuItemDecorator;
import org.andengine.entity.sprite.Sprite;
import org.andengine.opengl.util.GLState;
import org.andengine.entity.scene.menu.MenuScene.IOnMenuItemClickListener;

import com.example.crazyfall.SceneManager.SceneType;

//Esta es la clase de la escena de configuración donde mandamos a crear la escena y la cual es una extension de escena base
//La clase que implementa IOnMenuItemClickListener se usa para el control de los botones

public class ConfigurationScene extends BaseScene implements IOnMenuItemClickListener{

	//Con este metodo creamos el fondo y a los hijos de la escena
	@Override
	public void createScene() {
		// TODO Auto-generated method stub
		createBackground();
	    createMenuChildScene();
	}

	//Este metodo nos regresa al menu con darle la tecla de volver en nuestro dispositivo
	@Override
	public void onBackKeyPressed() {
		// TODO Auto-generated method stub
		//SceneManager.getInstance().
		SceneManager.getInstance().loadMenuScene(engine);
		
	}

	//Este metodo devuelve la instancia de la escena
	@Override
	public SceneType getSceneType() {
		// TODO Auto-generated method stub
 		return SceneType.SCENE_CONFIGURATION;

	}

	//Metodo para disponer de la escena
	@Override
	public void disposeScene() {
		// TODO Auto-generated method stub
		
	}
	
	// Este metodo se usa para cargar los recursos del fondo de la escena
	private void createBackground()
	{
	    attachChild(new Sprite(278, 375, resourcesManager.fondoConfiguracion, vbom)
	    {
	    	
	        @Override
	        protected void preDraw(GLState pGLState, Camera pCamera) 
	        {
	            super.preDraw(pGLState, pCamera);
	            pGLState.enableDither();
	        }
	    });
	}
	
	//Definicion de variables para los botones de la escena
	private MenuScene configurationChildScene;
	private final int MENU_RETURN = 0;

	//Configuras la pocision y la escala del menu dentro de tu pantalla.
	private void createMenuChildScene()
	{
		configurationChildScene = new MenuScene(camera);
		configurationChildScene.setScale(0.9f);
		configurationChildScene.setPosition(200, 300);
	    
	    
	    final IMenuItem configurationMenuItem = new ScaleMenuItemDecorator(new SpriteMenuItem(MENU_RETURN, resourcesManager.regresoConfigRegion, vbom), 1.2f, 1);
	  
	    configurationChildScene.addMenuItem(configurationMenuItem);

	    
	    
	    configurationChildScene.buildAnimations();
	    configurationChildScene.setBackgroundEnabled(false);
	    
	    configurationMenuItem.setPosition(configurationMenuItem.getX() - 200, configurationMenuItem.getY() - 220);

	    configurationChildScene.setPosition(configurationChildScene.getX() - 200, configurationChildScene.getY() - 420);
	    
	    configurationChildScene.setOnMenuItemClickListener(this);
	    
	    setChildScene(configurationChildScene);
	}

	//Metodo que se usa para asignar una funcion cuando se llegue a oprimir un boton
	@Override
	public boolean onMenuItemClicked(MenuScene pMenuScene, IMenuItem pMenuItem,	float pMenuItemLocalX, float pMenuItemLocalY) {
		// TODO Auto-generated method stub
		  switch(pMenuItem.getID())
	        {
	        case MENU_RETURN:
	    		SceneManager.getInstance().loadMenuSceneConfi(engine);
	            return true;
	        default:
	            return false;
	        }
	}
	

}
